Autor: Luis Fernando Apáez Álvarez
-Curso PyM-
Clase 1: Creación de bases de datos y tablas
Fecha: Marzo del 2023
SQL es un lenguaje de programación utilizado para manejar y manipular bases de datos relacionales. La sigla SQL significa "Structured Query Language" (Lenguaje de Consulta Estructurada, en español).
SQL se utiliza para realizar una amplia variedad de operaciones relacionadas con bases de datos, como la creación de tablas, la inserción de datos, la modificación de datos existentes y la eliminación de datos. También se utiliza para realizar consultas de datos, lo que significa recuperar información de una base de datos y mostrarla en una forma organizada.
SQL se aplica en una amplia variedad de entornos y aplicaciones, desde pequeñas bases de datos personales hasta grandes sistemas de gestión de datos empresariales. Es un lenguaje muy utilizado en aplicaciones web, ya que las bases de datos se utilizan frecuentemente en el backend (la parte funcional de un programa el cual, usualmente, no vemos) de aplicaciones para almacenar información y proporcionar datos a los usuarios.
El conocimiento de SQL es muy valioso para cualquier persona que trabaje en el campo de la informática, especialmente para los desarrolladores y los administradores de bases de datos. También es útil para analistas de datos y científicos que trabajan con grandes conjuntos de datos.
Básicamente, una base de datos relacional es un conjunto de tablas vínculadas entre sí. Además, en este curso trabajaremos con PostgreSQL (sistema de gestión de base de datos que nos permite trabajar con el lenguaje SQL) utilizando para ello la interfaz gráfica denominada pgAdmin.
PgAdmin es una herramienta de administración y desarrollo de bases de datos para PostgreSQL, la cual proporciona una interfaz gráfica de usuario (GUI) para interactuar con bases de datos PostgreSQL y permite a los usuarios administrar y desarrollar bases de datos PostgreSQL de manera eficiente. Con PgAdmin, los usuarios pueden crear y editar objetos de base de datos, como tablas, índices y funciones almacenadas, así como ver y editar datos de la base de datos. La herramienta también permite a los usuarios ejecutar consultas SQL y visualizar los resultados en diferentes formatos.
Una vez visto la breve introducción, entremos de lleno a utilizar PostgreSQL.
Una vez que hemos abierto pgAdmin, en la página principal daremos click en Servers, de donde nos aparecerá que el servidor es PostgreSQL 13 (u otro número, dependiendo de la versión que se haya descargado)
De ahí daremos click derecho en Databases, después en create y pulsaremos finalmente en DATABASE...
Nos aparecerá una ventana, lo primero que debemos hacer es colocar el nombre que queremos darle a la base de datos (BD) y podremos colocarle algún comentario descriptivo sobre dicha BD
vemos que hay 6 pestañas en la ventana. Por ahora no indagaremos en lo que se puede hacer en cada una, salvo con la pestaña SQL.
En nuestro caso hemos nombrado la base de datos como CursoPostgres. En la pestaña SQL se encuentra el código SQL con lo cual crearemos nuestra base de datos
donde dicho código se generó en automático al crear la BD como se especificó antes. Luego, daremos click en el botón Save para guardar nuestra base de datos.
La cual ya aparecerá en DATABASES:
Una vez que demos click en CursoPostgres se mostrarán varios elementos de nuestra base de datos
donde la mayaría de ellos se verán en clases posteriores.
La forma en que creamos dicha BD fue mediante las opciones que pgAdmin nos brindó, no obstante también vimos que podemos crear una BD mediante código SQL.
Si nosotros queremos crear una BD utilizando directamente código SQL deberemos abrir una pestaña Query tool en la cual se puede interactuar directamente con código SQL. Para ello seleccionamos cualquier BD, o en su defecto si no hemos creado ninguna BD, seleccionaremos la BD por defecto, la cual se denomina postgres:
Después damos click derecho y seleccionamos la opción de Query tool:
de modo se se desplegará a la derecha la pestaña:
en la cual ya podremos programar en el lenguaje SQL. Así, si deseamos crear una BD utilizamos la sentencia
CREATE DATABASE <<nombre que le queremos dar a la BD>>;
Por ejemplo:
de donde:
Podremos ver nuestra BD en la parte de server:
Si no se ve nuestra BD, será necesario refrescar, para lo cual te puedes situar en Databases (4), dar click derecho y elegir la opción refresh. Una vez que ya tenemos una BD podemos proseguir, ahora, a la creación de tablas.
Una vez que ya creamos nuestra base de datos nos iremos a la parte que dice Schemas (esquemas)
donde en automático se creó el esquema public el cual será en el que trabajaremos. Además podemos ver otras opciones, las cuales representan la materia prima de este curso, es decir, a lo largo del curso abordaremos la creación de tablas, funciones, triggers, procedimientos, manejaremos secuencias, crearemos vistas, etcétera.
Antes de continuar es preciso mencionar que un esquema (schema) hace alusión a la estructura (configuración lógica) de una base de datos, en la cual quedará almacenadas nuestras tablas y demás funcionalidades o elementos que configuremos en la BD.
Continuando, una vez seleccionada la opción de Schemas notamos que en automático se ha creado un esquema público (public) en la BD (así como existen esquemas públicos, existen esquemas privados), el cual será en el que trabajaremos. Lo de público tiene que ver con el acceso que se tiene a dicha configuración, pues, por ejemplo, puede ser que en algún caso no querramos que se modifique la configuración o estructura de la BD, por lo cual sería conveniente que el acceso al esquema de dicha BD sea privado. Una vez seleccionando el esquema público damos click derecho y desplegamos la pestaña de
Query tool. Al desplegar dicha pestaña a partir del esquema público hará que todo lo que hagamos en SQL afectará solo a la BD con la que estamos trabajando (CursoPostgres). De tal manera:
Antes de crear nuestra primer tabla es preciso que definamos un proyecto en el cual trabajaremos a lo largo de este curso para que éste vaya tomando forma, pues recordemos que la esencia de trabajar SQL son las bases de datos relacionales, de modo que las tablas que vayamos a crear deberán estar relacionadas entre sí.
Elegimos entonces trabajar con una base de datos referente a una papelería.
Una vez dicho lo anterior consideramos, inicialmente, las siguientes tres tablas:
Ahora bien, la sintaxis general para crear una tabla es la siguiente
CREATE TABLE <<nombre de la tabla>>(
<<nombre columna 1>> <<tipo de dato>>,
<<nombre columna 2>> <<tipo de dato>>,
.
.
.
<<nombre columna n>> <<tipo de dato>>);
A partir de lo anterior abordamos el siguiente subtema:
Podemos utilizar datos nativos de PostgreSQL para almacenar nuestros valores. Por ejemplo, si deseamos almacenar un entero como el 7, utilizaremos para ello el tipo de dato INT
(integer); si deseamos almacenar un nombre como 'Luis' (note que las cadenas de texto deben ir entre comillas simples) utilizaremos el tipo de dato, por ejemplo, VARCHAR
. Así, tendremos gran variedad de tipos de datos de acuerdo a la necesidad de los valores que queramos almacenar.
Para la tabla Productos
ocuparemos 4 columnas:
VARCHAR
.INT
real
que hace referencia a los números reales.La última columna por mencionar es la más importante de todas, que de hecho se debe definir primero, y ésta es independiente del contexto de la tabla. Dicha columna se conoce como un identificar, el cual nos sirve para tener, justamente, un indentificador único para las filas de una tabla. Por ejemplo, si tenemos una tabla que almacena nombres de personas, un posible identificador podría ser el CURP pues éste es único para cada persona (fila de la tabla). Imaginemos que en la tabla Productos
tenemos algo como
nombre_producto | cantidad_almacen | precio |
---|---|---|
Lápiz Big | 20 | 0.50 |
Lápiz Pelikan | 2 | 1.00 |
si bien al colocar la marca del lápiz hemos evitado el siguiente conflicto
nombre_producto | cantidad_almacen | precio |
---|---|---|
Lápiz | 20 | 0.50 |
Lápiz | 2 | 1.00 |
tenemos que la opción de poner la marca no es la más eficiente, donde el concepto de eficiencia en base de datos es crucial pues recordemos que en la vida real las bases de datos tienes millones de filas.
Así, si tenemos en su lugar un identificador (id
) para cada fila podremos manejar sin problemas tablas del estilo:
id_producto | nombre_producto | cantidad_almacen | precio |
---|---|---|---|
1 | Lápiz | 20 | 0.50 |
2 | Lápiz | 2 | 1.00 |
lo cual nos permitiría identificar dos tipos de lápiz aunque el nombre sea el mismo. El indetificador que mencionamos antes es muy común de utilizar en las tablas, aunque en algunas otras podemos tener otro tipo de identificadores, por ejemplo el CURP o algún número único asociado para cada fila.
Si bien, con la última versión de la tabla productos
seguimos teniendo una tabla que puede ser mejorada, el punto es dar la idea del porqué es importante tener un identificador en la mayoría de las tablas, con lo cual conseguimos un buen manejo de los datos que se almacenan en dicha tabla. Por ende consideraremos la columna:
productos
. Puede pensarse que el tipo de dato correcto para esta columna es INT
, sin embargo hay un tipo de dato que se acopla mejor a los identificadores, este es SERIAL
. El tipo de dato SERIAL
trae un incremento automático, es decir, cuando ingresemos datos a nuestra tabla no será necesario especificar el id_producto
pues se colocará de manera automática, más adelante veremos esto en acción.Procedemos pues a crear la tabla productos
como sigue
CREATE TABLE productos(
id_productos SERIAL,
nombre_producto VARCHAR,
cantidad_almacen INT,
precio REAL);
y después daremos click en ejecutar (no olvidemos que debemos seleccionar dicho código para posteriormente ejecutarlo).
Así, nuestra tabla productos
ha quedado guardada en nuestra base de datos
Para las tablas restantes utilizamos el siguiente código:
-- Esto es un comentario :)
-- Definición de la tabla empleados
CREATE TABLE empleados(
id_empleados SERIAL,
nombre VARCHAR,
app VARHCAR, -- apellido paterno
apm VARCHAR, -- apellido materno
puesto VARCHAR,
salario REAL -- note que en la última columna no ponemos una coma al final
);
-- Definición de la tabla ventas
CREATE TABLE ventas(
id_ventas SERIAL,
producto_vendido VARCHAR,
cantidad INT,
total REAL,
empleado VARCHAR -- empleado involucrado en la venta
);
recordemos que para ejecutar un código SQL debemos de seleccionarlo previamente como se ve en la siguiente imagen
y posteriormente seleccionamos la opción de ejecutar.